// 2025/5/28
// 买卖股票的最好时机（四）

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n, k; cin >> n >> k;
    vector<int> prices(n);
    for(auto& price : prices) 
        cin >> price;
    vector<pair<int, int>> dp(k + 1, {0, 0});
    for(auto& pr : dp)
        pr.first = -prices[0];

    for(int i = 1; i < n; i++)
    {
        for(int j = k; j > 0; j--)
        {
            dp[j].second = max(dp[j].second, dp[j].first + prices[i]);
            dp[j].first = max(dp[j].first, dp[j - 1].second - prices[i]);
        }
    }
    int ans = 0;
    for(auto& pr : dp)
    {
        ans = max(ans, pr.second);
    }
    cout << ans << endl;
}
// 64 位输出请用 printf("%lld")